Mobile applications, also called mobile apps or apps, are software applications, usually designed to run on smartphones, tablet computers, and other handheld devices. They are available through application distribution platforms, which are typically operated by the owner of the mobile operating system, such as the Apple® App Store, Android® Market, and BlackBerry® App World. Some mobile apps are free, and others may have a price. Usually the mobile apps are downloaded from the platform to a target device such as to one of the iPhone®, BlackBerry®, or Android® phones. Alternatively, they can be downloaded to other types of computers such as a laptops or desktops. Mobile apps were originally intended for productivity: e.g., email, calendar and contact databases, however, public demand caused rapid expansion into other areas such as mobile games, factory automation, global positioning systems (GPS) and location-based services, banking, order-tracking, and ticket purchases, and the like.
Mobile application development is the process by which application software is developed for handheld devices such as personal digital assistants, enterprise digital assistants or mobile phones. These mobile applications may be either pre-installed on phones during manufacture, may be downloaded by consumers from various mobile software distribution platforms, or may be web applications delivered over HTTP which use server-side or client-side processing (e.g. JavaScript) to provide an “application-like” experience within a Web browser. Android®, iOS®, BlackBerry®, HP webOS®, Symbian® OS, and Windows Mobile® operating systems support application binaries as found on personal computers with code which executes in the native machine format of the processor. Platforms for mobile applications also may have an integrated development environment that provides tools to allow a developer to write, test, and deploy applications into the target platform environment.
Typically, a software developer writes application software for an application provider for a specific task to be executed on a certain platform or operating system. If a second application provider desires to be able to offer the same mobile application, the software developer manually customizes the mobile application to reflect the second application provider. If a provider desires a mobile application to present one view of a certain function to a consumer and a second view to the provider, the software developer manually generates two different applications. As such, the manual process for generating mobile applications can be both costly and time consuming.